home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr14 / maped7.zip / MOUSE.PAS < prev    next >
Pascal/Delphi Source File  |  1993-05-31  |  3KB  |  204 lines

  1. {$A+,B-,D-,E-,F+,I-,L-,N-,O-,R-,S-,V-}
  2. {$M 1024,0,655360}
  3. Unit mouse;
  4.  
  5. interface
  6.  
  7. const  leftbutton  = $01;
  8.        rightbutton = $02;
  9.  
  10. type resetrec = record
  11.        exists   : boolean;
  12.        nbuttons : integer;
  13.      end;
  14.  
  15.      locrec = record
  16.        buttonstatus : integer;
  17.        opcount      : integer;
  18.        column       : integer;
  19.        row          : integer;
  20.      end;
  21.  
  22.      moverec = record
  23.        hcount : integer;
  24.        vcount : integer;
  25.      end;
  26.  
  27. procedure mreset(var mouse:resetrec);
  28. procedure mshow;
  29. procedure mhide;
  30. procedure mpos(var mouse:locrec);
  31. procedure mmoveto(col, row:integer);
  32. procedure mpressed(button:integer;var mouse:locrec);
  33. procedure mreleased(button:integer;var mouse:locrec);
  34. procedure mcolrange(min,max:integer);
  35. procedure mrowrange(min,max:integer);
  36. procedure mgraphcursor(hhot,vhot:integer;maskseg,maskofs:word);
  37. procedure mtextcursor(ctype,p1,p2:word);
  38. procedure mmotion(var moved:moverec);
  39. procedure minsttask(mask,taskseg,taskofs:word);
  40. procedure mlpenon;
  41. procedure mlpenoff;
  42. procedure mratio(horiz,vert:integer);
  43.  
  44. implementation
  45.  
  46. uses crt,dos;
  47.  
  48. const MDD       = $33;
  49.  
  50. var reg       : registers;
  51.  
  52. function lower(n1,n2:integer):integer;
  53. begin
  54.   if (n1<n2) then
  55.     lower:=n1
  56.   else
  57.     lower:=n2;
  58. end;
  59.  
  60. function upper(n1,n2:integer):integer;
  61. begin
  62.   if (n1>n2) then
  63.     upper:=n1
  64.   else
  65.     upper:=n2;
  66. end;
  67.  
  68. procedure mreset;
  69. begin
  70.   reg.ax:=0;
  71.   intr(mdd,reg);
  72.   if (reg.ax<>0) then
  73.     mouse.exists:=true
  74.   else
  75.     mouse.exists:=false;
  76.   mouse.nbuttons:=reg.bx;
  77. end;
  78.  
  79. procedure mshow;
  80. begin
  81.   reg.ax:=1;
  82.   intr(mdd,reg);
  83. end;
  84.  
  85. procedure mhide;
  86. begin
  87.   reg.ax:=2;
  88.   intr(mdd,reg);
  89. end;
  90.  
  91. procedure mpos;
  92. begin
  93.    reg.ax:=3;
  94.    intr(mdd,reg);
  95.    mouse.buttonstatus:=reg.bx;
  96.    mouse.column:=integer(reg.cx);
  97.    mouse.row:=integer(reg.dx);
  98. end;
  99.  
  100. procedure mmoveto;
  101. begin
  102.   reg.ax:=4;
  103.   reg.cx:=col;
  104.   reg.dx:=row;
  105.   intr(mdd,reg);
  106. end;
  107.  
  108. procedure mpressed;
  109. begin
  110.   reg.ax:=5;
  111.   reg.bx:=button;
  112.   intr(mdd,reg);
  113.   mouse.buttonstatus:=reg.ax;
  114.   mouse.opcount:=reg.bx;
  115.   mouse.column:=reg.cx;
  116.   mouse.row:=reg.dx;
  117. end;
  118.  
  119. procedure mreleased;
  120. begin
  121.   reg.ax:=6;
  122.   reg.bx:=button;
  123.   intr(mdd,reg);
  124.   mouse.buttonstatus:=reg.ax;
  125.   mouse.opcount:=reg.bx;
  126.   mouse.column:=reg.cx;
  127.   mouse.row:=reg.dx;
  128. end;
  129.  
  130. procedure mcolrange;
  131. begin
  132.   reg.ax:=7;
  133.   reg.cx:=lower(min,max);
  134.   reg.dx:=upper(min,max);
  135.   intr(mdd,reg);
  136. end;
  137.  
  138. procedure mrowrange;
  139. begin
  140.   reg.ax:=8;
  141.   reg.cx:=lower(min,max);
  142.   reg.dx:=upper(min,max);
  143.   intr(mdd,reg);
  144. end;
  145.  
  146. procedure mgraphcursor;
  147. begin
  148.   reg.ax:=9;
  149.   reg.bx:=hhot;
  150.   reg.cx:=vhot;
  151.   reg.dx:=maskofs;
  152.   reg.es:=maskseg;
  153.   intr(mdd,reg);
  154. end;
  155.  
  156. procedure mtextcursor;
  157. begin
  158.   reg.ax:=10;
  159.   reg.bx:=ctype;
  160.   reg.cx:=p1;
  161.   reg.dx:=p2;
  162.   intr(mdd,reg);
  163. end;
  164.  
  165. procedure mmotion;
  166. begin
  167.    reg.ax:=11;
  168.    intr(mdd,reg);
  169.    moved.hcount:=integer(reg.cx);
  170.    moved.vcount:=integer(reg.dx);
  171. end;
  172.  
  173. procedure minsttask;
  174. begin
  175.   reg.ax:=12;
  176.   reg.cx:=mask;
  177.   reg.dx:=taskofs;
  178.   reg.es:=taskseg;
  179.   intr(mdd,reg);
  180. end;
  181.  
  182. procedure mlpenon;
  183. begin
  184.   reg.ax:=14;
  185.   intr(mdd,reg);
  186. end;
  187.  
  188. procedure mlpenoff;
  189. begin
  190.   reg.ax:=15;
  191.   intr(mdd,reg);
  192. end;
  193.  
  194. procedure mratio;
  195. begin
  196.   reg.ax:=15;
  197.   reg.cx:=horiz;
  198.   reg.dx:=vert;
  199. end;
  200.  
  201. end.
  202.  
  203.  
  204.